GMRC
Used for predicting a continuous value
Formulas:
\(y = mx + b\) (where \(y\) is the predicted value, \(x\) is the input feature, \(m\) is the slope, and \(b\) is the y-intercept)
Mean Squared Error (MSE) loss function: \(\frac{1}{n}\sum_{i=1}^n(y_i - \hat{y_i})^2\)
Used for predicting a binary outcome (e.g. yes/no, pass/fail)
Formulas:
sigmoid function: $ $ (where \(z\) is the input to the function)
Cross-Entropy loss function: \(-\sum_{i=1}^n y_i log(\hat{y_i}) + (1-y_i)log(1-\hat{y_i})\)
reduces complexity of regression
allow the use of correlated varibles
cost function : \(\beta = argmin_{\beta} \frac{1}{n}||Y - X\beta||_2^2 + \lambda_1||\beta||_1 + \frac{\lambda_2}{2}||\beta||_2^2\)
Used for both classification and regression
good for interaction
Formulas:
Information Gain: \(IG(D_{p},f) = I(D_{p})-\sum_{j=1}^{m} \frac{N_j}{N_p}I(D_j)\)
Gini Index : \(Gini(D)= 1-\sum_{i=1}^{c}p_i^2\)
Used for both classification and regression
Bootstrap Aggregating (Bagging)
Random Subspace Method (RSM)
Used for classification
Formulas:
Linear SVM : \(y = wx + b\)
Non-Linear SVM : \(y = \sum_{i=1}^{n} \alpha_i y_i K(x_i,x) + b\)
Used for both classification and regression, as well as unsupervised learning
Feedforward: \(a = f(Wx + b)\)
Backpropagation: \(\frac{\partial L}{\partial w} = \frac{\partial L}{\partial a} * \frac{\partial a}{\partial w}\)
Used for unsupervised learning
Distance: \(d(x,y) = \sqrt{\sum_{i=1}^{n}(x_i-y_i)^2}\)
Centroid: \(\mu_j = \frac{\sum_{i=1}^{n} 1_{c_i = j} x_i}{\sum_{i=1}^{n} 1_{c_i = j}}\)
Used for unsupervised learning
Example: dimensionality reduction
XGBoost stands for “eXtreme Gradient Boosting”
It is an ensemble learning method for classification and regression problems
XGBoost is based on decision trees
XGBoost algorithm can handle missing values and can be used for feature selection
https://mlu-explain.github.io/decision-tree/
algorithme d’apprentissage supervisé
tâches de classification et de régression
nœud interne de l’arbre représente une caractéristique ou une propriété,
chaque nœud feuille représente une étiquette de classe ou une valeur
construction en divisant récursivement en fonction de la caractéristique qui donne les sous-ensembles les plus purs
en partant de la racine, qui représente l’ensemble des données d’entraînement
on choisit la caractéristique qui divise le mieux les données en sous-ensembles purs selon le critère choisi
jusqu’à ce qu’un certain critère d’arrêt soit atteint : profondeur max, nobre minnimum de données par noeud
feuilles représentent les classes cibles
Arbre utiliser pour classifier des nouvelles données
L’impureté de Gini : \[ Gini = 1 - \sum_{i=1}^{n}P(i|t)^2 \]
\(P(i|t)\) : la probabilité d’appartenance à la classe \(i\) pour les données dans le nœud \(t\).
L’impureté de Gini : probabilité qu’un élément choisi au hasard dans le nœud soit mal classé.
\[ H(S) = -\sum_{i=1}^{n}P(i|S)log(P(i|S)) \]
| couleur | poids (kg) | nombre de pépins | type |
|---|---|---|---|
| rouge | 0.5 | 5 | fraise |
| rouge | 0.8 | 10 | framboise |
| jaune | 0.3 | 2 | cerise |
| vert | 0.7 | 8 | pomme |
| vert | 0.6 | 3 | poire |
| couleur | poids (kg) | nombre de pépins | type |
|---|---|---|---|
| rouge | 0.5 | 5 | fraise |
| rouge | 0.8 | 10 | framboise |
| jaune | 0.3 | 2 | cerise |
| vert | 0.7 | 8 | pomme |
| vert | 0.6 | 3 | poire |
| couleur | poids (kg) | nombre de pépins | type |
|---|---|---|---|
| rouge | 0.5 | 5 | fraise |
| rouge | 0.8 | 10 | framboise |
| jaune | 0.3 | 2 | cerise |
| vert | 0.7 | 8 | pomme |
| vert | 0.6 | 3 | poire |
\[ Gini(base) = 1-1/5^2-1/5^2-1/5^2-1/5^2-1/5^2 \]
\[ Gini(couleur) = 1 - \sum_{i=1}^{n}P(i|couleur)^2 \]
\[ Gini(poids) = 1 - \sum_{i=1}^{n}P(i|poids)^2 \]
\[ Gini(nombre\ de\ pépins) = 1 - \sum_{i=1}^{n}P(i|nombre\ de\ pépins)^2 \]
\[ Gini(rouge) = 1 - \sum_{i=1}^{n}P(i|rouge)^2 = 1 - 0^2 - 0^2-0.5^2-0.5^2 = 0.75 \]
\[ Gini(jaune) = 1 - \sum_{i=1}^{n}P(i|rouge)^2 =\\ 1 - 0^2 - 0^2-1^2-0^2 = 0 \] \[ Gini(vert) = 1 - \sum_{i=1}^{n}P(i|rouge)^2 = 1 - 0.5^2 - 0^2-0.5^2-0^2 = 0.75 \] \[ Impurete\_moyenne = 2/5*Gini(rouge)+1/5*Gini(ver)\\+2/5*Gini(jaune) = 0.6 \]
\[ Gini(nbpepin>4) = 1 - \sum_{i=1}^{n}P(i|nbpepin>4)^2 =\\ 1 -0^2- 0^2 - 1/3^2-1/3^2-1/3^2 = 0.66 \]
\[ Gini(nbpep\leq4) = 1 - \sum_{i=1}^{n}P(i|\leq4)^2 = \\1 -1/2^2- 1/2^2 - 0^2-0^2-0^2 = 0.75 \]
\[Gini(nb\_pep) = 2/3*0.66+1/3*0.75 = 0.69 \]
propriété qui minimise l’impureté de Gini pour séparation : \(nb_pep \leq4\).
On crée deux sous-nœuds pour les fruits avec plus ou moins de 4 pépins
On répète les étapes 1 à 3 pour chaque sous-nœud en utilisant uniquement les données associées à ce sous-nœud. Exemple, \[ Gini(poids | nbpep\leq4) = 1 - \sum_{i=1}^{n}P(i|poids,nbpep\leq4)^2 \]
On répète jusqu’au critère de fin
Criterion : entropy ou gini
splitter : best ou random
Profondeur maximale : \(Max\_depth\)
Nombre minimum d’éléments dans un noeud de feuille : \(Min\_samples\_leaf\)
Nombre maximum de feuilles : \(Max\_leaf\_nodes\)
Nombre minimum de split : \(Min\_samples\_split\)
Pré-élagage : règle d’arrêt évaluer à chaque nouveau nœud qui stoppe la construction de l’arbre -> méthode de haut en bas
Post-élagage : Construction de l’arbre dans son intégralité puis calcul de l’intérêt de chaque nœud en partant des nœud terminaux -> méthode de bas en haut
Compréhensible par un humain
Pas besoin de normaliser les données
Accepte les données quanti et quali
Pb de surrapprentissage
Pb avec les classifications non équilibrés
Interpretability and Random Forests | by Tom Grigg | Towards Data Science
r : rpart https://ouvrir.passages.cnrs.fr/arbre_decision/_book/pratique.html
python : sklearn.tree.DecisionTreeClassifier
https://mlu-explain.github.io/logistic-regression/
Y binaire
Modélisation de \[ P(Y=1) \]
\(P(y=1|x) = \frac{1}{1 + e^{-(b_0 + b_1x_1 + b_2x_2 + ... + b_nx_n)}}\)
Fonction sigmoïdale comprise entre 0 et 1
Y quantitative
\(y = b_0 + b_1x_1 + b_2x_2 + ... + b_nx_n\)
possibilité d’effet non linéaire : \(y = b_0 + b_1x_1^2 + b_2x_2 + ... + b_nx_n\)
Contraindre la valeur des estimateurs des moindre carrés pour réduire la variance
\(\beta = argmin_{\beta} { \sum_{i=1}^{n} (y_i - \beta_0 - \sum_{j=1}^{p}x_{ij}\beta_j)^2 + contrainte}\)
\(\beta = argmin_{\beta} { \sum_{i=1}^{n} (y_i - \beta_0 - \sum_{j=1}^{p}x_{ij}\beta_j)^2 + \lambda \sum_{j=1}^{p} \beta_j^2}\)
\(\beta = argmin_{\beta} { \sum_{i=1}^{n} (y_i - \beta_0 - \sum_{j=1}^{p}x_{ij}\beta_j)^2 + \lambda \sum_{j=1}^{p} |\beta_j|}\)
Compromis ridge lasso
\(\beta = argmin_{\beta} { \sum_{i=1}^{n} (y_i - \beta_0 - \sum_{j=1}^{p}x_{ij}\beta_j)^2 + \lambda \sum_{j=1}^{p} ((1-\alpha)\beta_j^2 + \alpha|\beta_j|)}\)
si \(\alpha =0\) : ridge
si \(\alpha =0\) : lasso
alpha pour définir le type de pénalisation
lambda (force de la pénalisation)
r : glmnet
python : sklearn.linear_model https://scikit-learn.org/stable/modules/linear_model.html
Séparer l’espace \(X\) par un hyperplan
Classe positive : \(g(x) = \begin{cases} 1 & \text{si } w^Tx + b > 0 \\ -1 & \text{sinon} \end{cases}\)
définir le meilleur hyperplan par algorithme d’optimisation
r : e1071
python : sklearn.svm https://scikit-learn.org/stable/modules/svm.html
\(C\) : constante de régularisation
\(C \searrow\) : augmentation de la marge, des erreurs
\(C \nearrow\) : diminution de la marge, risque surajustement
-
\[ K(\textbf{x}_i, \textbf{x}_j) = \phi(\textbf{x}_i)^T \phi(\textbf{x}_j) \]
SVM peuvent être appliqués sur \(\phi(x)\) sans calculer \(\phi\)
Il suffit de calculer le noyau \(K(x,x')\)
Noyau linéaire:
\[ K(\textbf{x}_i, \textbf{x}_j) = \textbf{x}_i^T \textbf{x}_j \]
Noyau polynomial: \[ K(\textbf{x}_i, \textbf{x}_j) = (\textbf{x}_i^T \textbf{x}_j + c)^d \] où \(c\) est l’hyperparamètre de décalage et \(d\) est le degré du polynôme.
Noyau radial (ou gaussien): \[ K(\textbf{x}_i, \textbf{x}_j) = \exp\left(-\frac{|\textbf{x}_i - \textbf{x}_j|^2}{2\sigma^2}\right) \] où \(\sigma\) est un des hyperparamètres appelé la largeur de bande.
Noyau sigmoid: \[ K(\textbf{x}_i, \textbf{x}_j) = \tanh(\alpha\textbf{x}_i^T \textbf{x}_j + r) \] où \(\alpha\) et \(r\) sont des hyperparamètres.